package com.ctvit.cch.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ctvit.cch.core.pojo.domain.HotRecord;
import com.ctvit.cch.core.pojo.dto.hot.HotRecordAddDTO;
import com.ctvit.cch.core.pojo.dto.hot.HotRecordEditDTO;
import com.ctvit.cch.core.pojo.dto.hot.HotRecordListDTO;
import com.ctvit.cch.core.pojo.vo.hot.HotRecordGetVO;
import com.ruoyi.common.core.page.TableDataInfo;

import java.util.List;

/**
 * 热榜数据Service接口
 *
 * @author heyingcheng
 * @date 2025/07/27
 */
public interface IHotRecordService extends IService<HotRecord> {

    /**
     * 查询热点列表
     *
     * @param dto 列表参数
     * @return {@link TableDataInfo } 热点列表数据
     */
    TableDataInfo list(HotRecordListDTO dto);

    /**
     * 新增热点
     *
     * @param dto 新增参数
     * @return 是否成功
     */
    boolean add(HotRecordAddDTO dto);

    /**
     * 修改热点
     *
     * @param dto 修改参数
     * @return 是否成功
     */
    boolean edit(HotRecordEditDTO dto);

    /**
     * 获取热点详细信息
     *
     * @param id ID
     * @return 热点详细信息
     */
    HotRecordGetVO get(String id);

    /**
     * 根据状态查询热榜数据
     *
     * @param status 状态
     * @return 热榜数据列表
     */
    List<HotRecord> listByStatus(String status);

    /**
     * 计算并更新指定天数内的热点数据的聚合评分
     *
     * @param days 天数
     * @return 更新的记录数量
     */
    int aggregate(int days);

    /**
     * 重新分类指定天数内的热点数据
     *
     * @param days 天数
     * @return 重新分类的记录数量
     */
    int recategory(int days);

}
